/*************************************************************************
> File Name: vector.h
> Author: hzy
> Created Time: 2023-08-17 19:42:28
> Description:
************************************************************************/
#ifndef _VECTOR_H_
#define _VECTOR_H_

#include <iostream>
using namespace std;

template <class T>
class MyArray
{
private:
    T *Data;      // 数据元素
    int Size;     // 数组元素的大小
    int Capacity; // 动态数组的容量

public:
    MyArray();
    ~MyArray();

    // 获取动态数组的容量
    int getCapacity();

    // 获取动态数组的大小
    int getSize();

    // 判断动态数组是否为空
    bool isEmpty();

    // 尾插法插入
    void pushBack(T value);

    // 删除末尾的数据元素
    void popBack();

    // 重载[]操作符(访问指定位置的元素)
    T &operator[](int location) const;

    // 打印数组元素
    void showArr();

private:
    // 调整动态数组的容量
    void reSize(int newCapacity);

    // 重载输出操作符
    template <class U>
    friend ostream &operator<<(ostream &os, const MyArray<U> &arr);
};

#endif